﻿Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
Public Class LandschaftstexturStraße
    Inherits ObjektLandschaftsTextur
    Dim Landschaftstexturen() As Texture
    Dim LandschaftsTexturAusrichtung() As String = {"+N", "+O", "+S", "+W", "+N+O", "+N+S", "+N+W", "+O+S", "+O+W", "+S+W", "+N+O+S", "+N+O+W", "+N+S+W", "+O+S+W", "+N+O+S+W"}


    Public Sub New()
        ID = "STRAßE"
        Landschaftsname = "Straße"
        Deckung = 0
        Tarnung = False
        KP = -1
        TexturenLaden(New String() {"Straße+S", "Straße+N+O", "Straße+N+O+S+W", "Straße+N+O+W", "Straße+N+S", "Straße+N+S+W", "Straße+N+W", "Straße+N+O+S", "Straße+O+W", "Straße+O+S+W", "Straße+S+W", "Straße+O+S", "Straße+O", "Straße+W", "Straße+N"})
        Normal = 0
        Ausrichtungslandschaften = New String() {"STRAßENFROST", "PFAD", "STRAßE", "BRÜCKE", "HQ", "STADT", "BASIS", "HAFEN", "FLUGHAFEN", "TURM", "WERFT", "ZUGBRÜCKE", "BAUBRÜCKE"}
        If My.Settings.draw3D Then
            Ini3D()
        End If
    End Sub

    Public Overrides Sub Malen3D(ByVal p_MatCube As Microsoft.DirectX.Matrix, ByVal Landschaft As ObjektLandschaft)
        Dim ind As Integer = 0
        Dim Ausr As String = getAusrichtung(Landschaft.KooX, Landschaft.KooY, Objektverwalter.Spielfeld).ToUpper
        For i = 0 To LandschaftsTexturAusrichtung.Length - 1
            If Ausr = LandschaftsTexturAusrichtung(i).ToUpper Then
                'Ha, das müsste sie sein!
                ind = i
                Exit For
            End If
        Next
        Grafikengine.Grafikkarte.SetTexture(0, Landschaftstexturen(ind))
        Dim standardMatrix As Matrix = Grafikengine.Grafikkarte.Transform.World
        Grafikengine.Grafikkarte.Transform.World = p_MatCube


        'Berechnen:
        Dim Farbe As Color = ObjektmarkiertesFeld.getFeldFarbe(Landschaft.KooX, Landschaft.KooY)
        Dim cube(3) As CustomVertex.PositionColoredTextured
        cube(0) = New CustomVertex.PositionColoredTextured(0, 0, 0, Farbe.ToArgb, 0, 1)
        cube(1) = New CustomVertex.PositionColoredTextured(0, 0, 1, Farbe.ToArgb, 0, 0)
        cube(2) = New CustomVertex.PositionColoredTextured(1, 0, 0, Farbe.ToArgb, 1, 1)
        cube(3) = New CustomVertex.PositionColoredTextured(1, 0, 1, Farbe.ToArgb, 1, 0)


        'Anzeigen:
        Dim M As New Material
        M.Emissive = Farbe
        Grafikengine.Grafikkarte.Material = M
        Grafikengine.Grafikkarte.VertexFormat = CustomVertex.PositionColoredTextured.Format
        Grafikengine.Grafikkarte.DrawUserPrimitives(PrimitiveType.TriangleStrip, 2, cube)

        'Wieder den Ursprungsstatus wiederherstellen..
        Grafikengine.Grafikkarte.Transform.World = standardMatrix
    End Sub

    Public Overrides Sub Ini3D()
        ReDim Landschaftstexturen(LandschaftsTexturAusrichtung.Length - 1)
        For i = 0 To Me.LandschaftsTexturAusrichtung.Length - 1
            Landschaftstexturen(i) = Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "Landschaften\Bilder\3D\" + My.Settings.TexturQuali + "\Straße" + LandschaftsTexturAusrichtung(i) + ".png")
        Next
    End Sub

    Public Overrides Sub Tick()

    End Sub
End Class
